import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.InputMismatchException;
import java.util.Scanner;


public class Utilisateur {
	private static Scanner scanner = new Scanner(System.in);
	
	/**
	 * Consultation des albums publiques.
	 */
	public static void consulterAlbums(){
		String select = "SELECT Titre, sousTitre, visible FROM Album where visible =1";
		try {
			Statement stmt = Application.getStmt();
			stmt.executeUpdate("SET TRANSACTION READ ONLY");
			ResultSet res = stmt.executeQuery(select);
			System.out.println("Titre			Sous-titre");
			while (res.next())
			{
				String st = res.getString(1);
				if (st==null) st = "";
				//System.out.println(res.getString(1)+"oooo"+ res.getString(2));
				System.out.printf("%s %30s \n",res.getString(1), res.getString(2));
				
			}
			stmt.executeUpdate("COMMIT");
			res.close();
			
		} catch (SQLException e) {
			System.out.println("Erreur");
			e.printStackTrace();
		}
		System.out.println("----------------------------------");
	}

	/**
	 * 
	 * @return vrai si le client a réussi à se connecter, faux sinon.
	 */
	public static boolean seConnecter(){
		boolean connected = false;
		System.out.print("Entrez votre mail :");
		String mail = scanner.nextLine();
		
		System.out.print("Entrez votre mot de passe :");
		String mdp = scanner.nextLine();
		
		String select = "SELECT mail, MOTDEPASSE, adresse, codePostal, ville FROM CLIENT where mail LIKE '"+mail+"'";
		
		try {
			Statement stmt = Application.getStmt();
			//stmt.executeUpdate("SET TRANSACTION READ ONLY");
			ResultSet res = stmt.executeQuery(select);
			
			if (res.next())
			{
				if (mdp.compareTo(res.getString(2).toString()) == 0 ){
					connected = true;
					//instenciation du client
					//Client(idClient, adresse, codePostal, ville);
				}
			}
			stmt.executeUpdate("COMMIT");
			res.close();
		} catch (SQLException e) {
			
			e.printStackTrace();
		}
		return connected;
		
		
	}
	
	/**
	 * Créer un nouveau compte. Rajoute une entrée dans la table Client
	 * @return vraie si l'inscription a réussie, faux sinon.
	 */
	public static boolean creerCompte(){
		//Récupération des données auprès du client
		System.out.print("Entrez votre nom :");
		String nom = scanner.nextLine();
		
		System.out.print("Entrez votre prenom :");
		String prenom = scanner.nextLine();
		
		System.out.print("Entrez votre mail :");
		String mail = scanner.nextLine();
		while (mail.isEmpty()){
			System.out.print("Champ obligatoire, entrez votre mail :");
			mail = scanner.nextLine();
		}
		
		boolean mdpOK = false;
		String mdp = "", mdpConf;
		while (!mdpOK){
			System.out.print("Entrez un mot de passe :");
			mdp = scanner.nextLine();
			System.out.print("Confirmez le mot de passe :");
			mdpConf = scanner.nextLine();
			mdpOK = (mdp.equals(mdpConf)) & (!mdp.isEmpty());
			if (!mdpOK) System.out.println("Le mot de passe est incohérent ou vide.");
		}
		
		
		System.out.print("Entrez votre adresse :");
		String adresse = scanner.nextLine();
		
		int codePostal = 0;
		while (codePostal == 0){
			try {
				System.out.print("Entrez le code Postal :");
				codePostal = scanner.nextInt();
			}
			catch(InputMismatchException e){
				System.out.println("Ce n'est pas un CP !");
				scanner.nextLine();
			}
		
		}
		scanner.nextLine();
		System.out.print("Entrez la ville :");
		String ville = scanner.nextLine();
		
		
		//créer une ligne dans la table Client
		String insert = "insert into Client values('"+mail+"','"+mdp+"','"+nom+"','"+prenom+"','"+adresse+"','"+codePostal+"','"+ville+"')";
		try
		{
			Statement stmt = Application.getStmt();
			stmt.executeUpdate(insert);
			stmt.executeUpdate("COMMIT");
			

		} 
		catch (SQLException e)
		{
			System.out.println("Erreur SQL :" + e.getMessage());
			System.out.println("Une erreur est survenu lors de l'inscription.");
			e.printStackTrace();
			return false;
		}
		System.out.println("Inscription réussie.");
		return true;
	}
}
